The central processing unit ("CPU") of a computing system or input/output ("I/O") devices connected to the computing system may request and be granted access to, and control of, a commonly used bus, such as a system bus. An arbiter in turn is used to arbitrate bus requests and grant certain of those requests based on the programmed arbitration parameters.
Typically, the CPU and I/O devices require access and control of the bus for a predetermined period of time after it has requested such control. If access is not granted within the maximum latency tolerance of the device, performance degradation and a potential loss of data may occur in the computing system.
Similarly, the CPU and I/O devices also require that they be allowed to control the bus for a specific period of time over a given time interval. If they are not allowed this period of time, it may result in bandwidth problems which also may affect computing system operations.
Computing system failures may occur because of these latency and bandwidth problems. Typically, the failures occur under peak loading conditions and are a function of the number of I/O devices competing for the bus along with the CPU, the data rates of these I/O devices, the loads on the devices, and the request rates for control of the bus by the CPU and I/O devices.
It's customary in the development of computing systems to stress latency and bandwidth in the debugging process. This stress testing is used to determine the limits of the system and ensure that the system performs optimally in the expected application environment.
Prior methods of performing such testing used software to attempt to create or recreate certain occurrences that caused system failures. Such testing was difficult to do because of the inability to control the interaction among various I/O devices in a deterministic manner. Therefore, large amounts of software run for a long period of time was required to create various latencies and bandwidth conditions the system would encounter in normal operations. This process of using large amounts of software to test latency and bandwidth was non-deterministic and in no way ensured that all of the desired stressing conditions were delivered to the system.